// 导出一个axios的实例  而且这个实例要有请求拦截器 响应拦截器
import axios from 'axios'
import store from '@/store'

import router from '@/router'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
}) // 创建一个axios的实例
// service.interceptors.request.use() // 请求拦截器
// service.interceptors.response.use() // 响应拦截器
// 添加请求拦截器
service.interceptors.request.use(
  config => {
    const token = store.state.user.token
    // 如果当前存有token,就加在请求头上
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  }
  , error => {
    return Promise.reject(error)
  })
// 添加响应拦截器
// 响应拦截器这里对错误进行修改了
// 可是我按照老师的写的呀
// 我应该还是没懂，我理一理
service.interceptors.response.use(function(response) {
  console.log(response)
  // 对响应数据做点什么
  // 嘿嘿，好啦
  if (response.data.success) {
    console.log('成功请求')
    return response.data
  } else {
    console.log('失败请求{}', response.data)

    return Promise.reject(new Error(response.data.message))
  }
}, function(error) {
  console.log('错误处理')
  if (error.response.data.code === 10002) {
    console.log('token失效')
    store.dispatch('user/logout')
    // .vue -- this.$route.fullPath
    //  .js -- router.currentRoute.fullPath

    router.push({
      path: '/login',
      query: {
        return_url: router.currentRoute.fullPath
      }
    })
  }
  // 处理token
  // if (error.response.data.code === 10002) {
  //   console.log('token失效')
  //   store.dispatch('user/logout')
  //   // .vue -- this.$route.fullPath
  //   //  .js -- router.currentRoute.fullPath

  //   router.push('/login?return_url=' + encodeURIComponent(router.currentRoute.fullPath))
  // }
  // console.dir(error)

  // 对响应错误做点什么
  return Promise.reject(error)
})
export default service // 导出axios实例
